/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved.
 */
package com.icinfo.cloud.provider.punish.ucase.casemain.service;

import com.icinfo.cloud.provider.punish.ucase.casemain.model.CaseMainInfoStatusChangeRecord;
import com.icinfo.cloud.provider.punish.ucase.investigateevidence.dto.CaseOperateUpdateDto;
import com.icinfo.cloud.provider.punish.ucase.investigateevidence.dto.CaseStatusUpdateAfterApprovalDto;
import com.icinfo.framework.core.service.BaseService;

/**
 * 描述: 案件暂停恢复记录表 case_main_info_status_change_record 对应的Service接口.<br>
 *
 * @author framework generator
 * @date 2022年05月23日
 */
public interface ICaseMainInfoStatusChangeRecordService extends BaseService {
    /**
     * 【V2.0.0】描述：更新案件操作
     *
     * @param updateDto 更新dto
     * @return int
     * @author shishengyao
     * @date 2022/05/19
     */
    int saveCaseChangeOperate(CaseOperateUpdateDto updateDto);


    /**
     * 描述：审批之后更新案件状态
     *
     * @param updateDto 更新dto
     * @author shishengyao
     * @date 2022/07/13
     */
    void updateCaseStatusAfterLastApproval(CaseStatusUpdateAfterApprovalDto updateDto);

    /**
     * 描述：查询案件变更记录
     *
     * @param caseId         用例id
     * @param caseChangeType 情况变化类型
     * @return {@link CaseMainInfoStatusChangeRecord }
     * @author shishengyao
     * @date 2022/05/23
     */
    CaseMainInfoStatusChangeRecord getCaseMainInfoStatusChangeRecordByChangeType(String caseId, String caseChangeType);

    /**
     * 描述：查询案件变更记录
     *
     * @param caseId     用例id
     * @param documentId 文档id
     * @return {@link CaseMainInfoStatusChangeRecord }
     * @author shishengyao
     * @date 2022/07/12
     */
    CaseMainInfoStatusChangeRecord getCaseMainInfoStatusChangeRecordByDocumentId(String caseId, String documentId);
    /**
     * 案件恢复
     *
     * @param caseId 案件ID
     * @return
     */
    int recoverCase(String caseId);

    /**
     * 描述：通过文书id删除案件操作记录
     *
     * @param documentId 文档id
     * @return boolean
     * @author shishengyao
     * @date 2022/06/07
     */
    int deleteStatusChangeRecordByDocumentId(String documentId);

    /**
     * 【V1.3.2】描述：案件终止
     *
     * @param caseId 案件id
     * @param caseStatus 案件状态
     * @return int
     * @author shishengyao
     * @date 2022/07/25
     */
    int saveCaseTerminateRecord(String caseId,String caseStatus);

    /**
     * 【V1.3.2】描述：案件中止
     *
     * @param caseId 案件id
     * @return int
     * @author shishengyao
     * @date 2022/09/27
     */
    int saveCaseSuspendRecord(String caseId);

    /**
     * 【V1.3.0】描述：根据环节编码撤回案件变更状态记录
     *
     * @param caseId       案件id
     * @param caseLinkCode
     * @author shishengyao
     * @date 2022/11/16
     */
    void recallCaseMainInfoStatusChangeRecordByCaseLinkCode(String caseId, String caseLinkCode);
}
